package com.example.mapper;

import com.example.entity.MenuPermission;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface MenuPermissionMapper {
    
    // 基础CRUD操作
    int insert(MenuPermission menuPermission);
    
    int deleteById(Long id);
    
    int updateById(MenuPermission menuPermission);
    
    MenuPermission selectById(Long id);
    
    List<MenuPermission> selectList(@Param("menuPermission") MenuPermission menuPermission);
    
    // 根据菜单ID查询
    List<MenuPermission> selectByMenuId(@Param("menuId") Long menuId);
    
    // 根据权限ID查询
    List<MenuPermission> selectByPermissionId(@Param("permissionId") Long permissionId);
    
    // 根据菜单ID列表查询
    List<MenuPermission> selectByMenuIds(@Param("menuIds") List<Long> menuIds);
    
    // 根据权限ID列表查询
    List<MenuPermission> selectByPermissionIds(@Param("permissionIds") List<Long> permissionIds);
    
    // 删除菜单的所有权限关联
    int deleteByMenuId(@Param("menuId") Long menuId);
    
    // 删除权限的所有菜单关联
    int deleteByPermissionId(@Param("permissionId") Long permissionId);
    
    // 检查菜单权限关联是否存在
    boolean existsByMenuIdAndPermissionId(@Param("menuId") Long menuId, @Param("permissionId") Long permissionId);
    
    // 统计总数
    long selectCount(@Param("menuPermission") MenuPermission menuPermission);
} 